<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/**
 * @property Doctrine $doctrine Biblioteca ORM
 * Controller de Posts
 */
class Post extends SiteController {
    
    public function __construct(){
        parent::__construct();
        date_default_timezone_set("America/Sao_Paulo");
    }

    public function index($id_menu, $page = 0){
        $offset = 0;
        if( $page != 0 ) {
            $offset = ( $page - 1 ) * LIMITE_PAGINACAO_ADMIN;
        }
        
        $findBy = array('menu' => $id_menu, 'ativo' => true);

        $lista = $this->doctrine->em->getRepository( 'Posts' )->findBy(
            $findBy, array('data_alteracao' => 'DESC'), LIMITE_PAGINACAO_ADMIN, $offset
        );
        
        $total = $this->count();
        
        $menu = $this->getMenu($id_menu);
        $this->assign( 'posts', $lista );
        $this->assign( 'total', $total );
        $this->assign('titulo', $menu['titulo']);
        $this->assign('id_menu_principal', $menu['id_menu_principal']);
        $this->display( 'post/index' );
        
    }
    
    public function detalhes($id_post){
        $findBy = array('id_post' => $id_post, 'ativo' => true);
        $post = $this->doctrine->em->getRepository( 'Posts' )->findOneBy($findBy);
        $this->assign('post', $post);
        $this->assign('id_menu_principal', $post->get_menu()->get_menu_principal()->get_id_menu_principal());
        $this->display('post/detalhes');
    }
    
    public function comentario(){
        $em = $this->doctrine->em;
        $comentario = new Comentarios();
        populateForm($comentario, $this->input->post());
        $user_fb = $this->get_user_fb();
        if ($user_fb){
            $comentario->set_facebook_id($user_fb->id);
            $comentario->set_nome($user_fb->name);
        }
        $id_post = $this->input->post('id_post');
        $id_comentario_pai = $this->input->post('id_comentario_pai');
        if (!empty($id_post)){
            $post = $em->getRepository('Posts')->find($id_post);
            $comentario->set_post($post);
        }
        if(!empty($id_comentario_pai)){
            $comentario_pai = $em->getRepository('Comentarios')->find($id_comentario_pai);
            $comentario->set_comentario_pai($comentario_pai);
            $id_post = $this->input->post('id_post_redirect');
        }
        $em->persist( $comentario );
        $em->flush();
        //depois que o usuário postar o comentário, a pagina será ancorada no comentário postado
        $id_comentario = $comentario->get_id_comentario();
        redirect('site/post/detalhes/'.$id_post. "#comentario-$id_comentario");
    }
    
    public function reply($id_post, $id_comentario_pai){
        $this->assign('id_comentario_pai', $id_comentario_pai);
        $comentario = $this->doctrine->em->getRepository( 'Comentarios' )->find($id_comentario_pai);
        $this->assign('comentario', $comentario);
        $this->assign('id_post_redirect', $id_post);
        $this->display('post/components/detalhes/reply/reply');
    }
    
    //////////////////
    
    private function count() {
        $sql = "select count(*) from posts where ativo = true";
        $stmt = $this->doctrine->em->getConnection()->prepare($sql);
        $stmt->execute();
        return $stmt->fetchColumn(0);
    }
    
    private function getMenu($id_menu){
        $sql = "select titulo, id_menu_principal from menus where id_menu = $id_menu";
        $stmt = $this->doctrine->em->getConnection()->prepare($sql);
        $stmt->execute();
        return $stmt->fetch();
    }
}
/* End of file post.php */
/* Location: ./application/controllers/site/post.php */